from django.views import View
# 导入返回响应
from SaaSDevelTool.data_return_response import create_response
# 导入错误信息装饰器
from SaaSDevelTool.data_return_response import error_message_detection
# 导入解析用户信息函数
from SaaSDevelTool.data_user_func import user
# 获取当前时间
from SaaSDevelTool.data_datetime_func import get_datatime
# 获取数据库连接
from SaaSDevelTool.data_mysql_data import db

"""添加用户组"""


class SaaSDevelRoleRbacCreate(View):
    @error_message_detection
    # 定义函数
    def post(self, request):
        # 获取用户组名称
        role_name = request.POST.get("role_name")

        # 判断当前传递的参数
        if not role_name:
            return create_response(code=400, msg="添加失败，请填写用户组名称。")

        # 判断用户组名称数据格式
        if len(role_name) > 50:
            return create_response(code=400, msg="添加失败，用户组名称字符不得大于50字。")

        # 解析用户信息
        user_message = user.get_user(request)

        # 用户组名称不能重复
        query_base_info_role_table_sql = """
            SELECT 
                role_name 
            FROM 
                db_center_rbac.base_info_role_table 
            WHERE 
                role_name = '{}'
            ;""".format(role_name)
        # 获取值
        query_base_info_role_table_data = db.findOne(query_base_info_role_table_sql)
        # 判断
        if query_base_info_role_table_data:
            return create_response(code=400, msg="添加失败，当前用户组已存在，请勿重复添加。")

        # 拼接插入语句
        create_base_info_role_table_sql = """
            INSERT INTO 
                db_center_rbac.base_info_role_table(
                    role_name, 
                    create_time, 
                    create_user 
                )   
            VALUES
                ('{}', '{}', {})
            ;""".format(role_name, get_datatime(), user_message['user_id'])
        # 执行语句
        db.update(create_base_info_role_table_sql)
        # 返回响应
        return create_response(code=200, msg="用户组添加成功！")
